package com.bill.common.system.dao;

import org.compass.core.util.StringUtils;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.bill.common.system.dto.IMessageDTO;
import com.bill.common.system.entity.IMessage;
import com.sinba.common.dao.BaseDAOImplHibernate;
import com.sinba.common.dto.PageDTO;

public class IMessageDAO extends BaseDAOImplHibernate<IMessage> implements IIMessageDAO {
	public PageDTO findPageIMessage(IMessageDTO dto , String sord, String sidx){
		final DetachedCriteria dc = DetachedCriteria.forClass(IMessage.class);
		
		if(dto!=null){
			if(StringUtils.hasText(dto.getReceiveUser())){
				dc.add(Restrictions.eq("receiveUser", dto.getReceiveUser()));
			}
			if(StringUtils.hasText(dto.getSendUser())){
				dc.add(Restrictions.eq("sendUser", dto.getSendUser()));
			}
			if(StringUtils.hasText(dto.getMessage())){
				dc.add(Restrictions.like("message", dto.getMessage()));
			}
			if(StringUtils.hasText(dto.getStatus())){
				dc.add(Restrictions.eq("status", dto.getStatus()));
			}
			if(StringUtils.hasText(dto.getMtype())){
				dc.add(Restrictions.eq("mtype", dto.getMtype()));
			}
			if(StringUtils.hasText(dto.getLoginName())){
				dc.add(Restrictions.or(Restrictions.eq("sendUser", dto.getLoginName()), Restrictions.eq("receiveUser", dto.getLoginName())));
			}
		}
		
		//排序
        if ( StringUtils.hasText(sord) && StringUtils.hasText(sidx)){
        	if("nr_sord".equals(sord)){
        		dc.addOrder(Order.desc("status"));
        		dc.addOrder(Order.desc("imId"));
        	}else{
        		if ( sord.equals( "desc" ) ){
                    dc.addOrder( Order.desc( sidx ) );
                } else{
                    dc.addOrder( Order.asc( sidx ) );
                }
        	}
            
        }
		return super.findPageByCriteria(dc, dto.getStart(), dto.getLimit());
	};
}
